package com.wwy.arithmetic.suanfa;

/**
 * 获取位一的个数
 */
public class WeiYiGeShu {
    /**
     * 输入：n = 11
     * 输出：3
     * 解释：输入的二进制串 1011 中，共有 3 个设置位。
     * 示例 2：
     * 输入：n = 128
     * 输出：1
     * 解释：输入的二进制串 10000000 中，共有 1 个设置位。
     * 示例 3：
     * 输入：n = 2147483645
     * 输出：30
     * 解释：输入的二进制串 11111111111111111111111111111101 中，共有 30 个设置位。
     */

    public static void main(String[] args) {
        int i = erJinZhi(128);
        System.out.println("i = " + i);
    }

    static int erJinZhi(int num) {
        int ret = 0;
        for (int i = 0; i < 32; i++) {
            if ((num & (1 << i)) != 0) {
                ret++;
            }
        }
        return ret;

    }
}
